package br.pb.sistcomp.entity;

import java.util.Date;

/**
 * Class that represents an entity in the system
 *
 * @author jefferson Bello, Jefferson.bello@dce.ufpb.br
 * @version 1.0
 *
 * Copyright (C) 2011 SistComp.
 */
public class Boleto implements I_FormaDePagamento {

    private String nomeDoBanco;
    private Date vencimento;
    private String agencia;
    private String conta;

    /**
     * Construtor Default da classe Boleto.
     */
    public Boleto() {
    }

    /**
     * Construtor da classe Boleto.
     * @param nomeDoBanco String, representa o nome do banco onde receberá o pagamento da compra.
     * @param vencimento Date, representa o dia limite para o pagamento da compra.
     * @param agencia String, representa o numero da agencia para pagamento
     * @param conta String representa o numero da conta onde será creditado o dinheiro
     */
    public Boleto(String nomeDoBanco, Date vencimento, String agencia, String conta) {
        this.nomeDoBanco = nomeDoBanco;
        this.vencimento = vencimento;
        this.agencia = agencia;
        this.conta = conta;
    }

    /**
     * Metodo responsavel em calcular o valor pago pelo cliente usando boleto bancario
     * @param valorDaCompra representa o valor unico da compra.
     * @return retorna o valor a ser pago, considerando desconto ou acrescimos.
     */
    @Override
    public float getValorDoPagamento(float valorDaCompra) {
        float acrescimoDoBoleto = 3;
        return valorDaCompra + acrescimoDoBoleto;
    }

    /**
     * Metodo responsavel em informar qual tipo de pagamento da compra foi escolhido ( cartao, boleto ou a vista )
     * @return String, representando o tipo da compra.
     */
    @Override
    public String getTipoDePagamento() {
        return "Boleto";
    }

    public String getAgencia() {
        return agencia;
    }

    public void setAgencia(String agencia) {
        this.agencia = agencia;
    }

    public String getConta() {
        return conta;
    }

    public void setConta(String conta) {
        this.conta = conta;
    }

    public String getNomeDoBanco() {
        return nomeDoBanco;
    }

    public void setNomeDoBanco(String nomeDoBanco) {
        this.nomeDoBanco = nomeDoBanco;
    }

    public Date getVencimento() {
        return vencimento;
    }

    public void setVencimento(Date vencimento) {
        this.vencimento = vencimento;
    }
}
